/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package colloque.helpers;

import colloque.Colloque;
import colloque.HibernateUtil;
import colloque.MotCle;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Thomas
 */
public class ColloqueHelper {
    
    
    Session session = null;

    /**
     *
     */
    public ColloqueHelper() {
         this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }
    
    
    /**
     * Trouve un colloque par son titre
     * 
     * @param nomc
     * @return
     */
    public Colloque getColloqueByNom(String nomc){
        Colloque col = new Colloque();
        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Colloque as C where C.colloquenom ='"+ nomc+ "'");
            col = (Colloque)q.uniqueResult();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        
        return col;
        
    }

    
    /**
     * Trouve un colloque par son id
     * 
     * @param id
     * @return
     */
    public Colloque getColloqueById(int id){
        Colloque col = new Colloque();
        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Colloque as C where C.colloqueid ='"+ id + "'");
            col = (Colloque)q.uniqueResult();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        
        return col;
        
    }
    
    /**
     * Retourne tous les colloques
     * 
     * @return
     */
    public List<Colloque> getColloques(){
        List<Colloque> col = new ArrayList<Colloque>();
        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Colloque");
            col = q.list();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        
        return col;
        
    }
        
     /**
     * Retourne la liste des colloques dont l'utilisateur est président
     * 
     * @param presidentid
     * @return
     */
    public List<Colloque> getColloquesFromPresident(int presidentid) {
        List<Colloque> col = new ArrayList<Colloque>();
        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Colloque c where c.president = " + presidentid);
            col = q.list();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return col;

    }
    /**
     * Créée un colloque
     * 
     * @param nomcol
     * @param desc
     * @param ddepot
     * @param tabmc
     * @return
     */
    public Colloque creer(String nomcol,String desc,String ddepot,Set<MotCle> tabmc){
        Colloque col = new Colloque(nomcol,desc,ddepot,tabmc);
        Transaction tx = session.beginTransaction();
        session.save(col);
        tx.commit(); 
        return col;    
}
}
